1. Field of the Invention
The present invention relates generally to Internet-based computer applications and more particularly to providing these applications to a user from a remote server.
2. Discussion of the Related Art
In conventional computer systems, a computer application operates within the confines of an operating system resident on a local computer. The operating system provides a layer of abstraction between the computer application and the operation of the physical computer hardware associated with the local computer. The operating system enables developers of the computer application to provide various functionality to a user regardless of the type of physical computer hardware owned by the user. For example, the operating system provides the computer application with access to hard drives, monitors, input/output ports, peripherals, and various other devices without having to understand the nature and operation of the particular piece of physical hardware associated with the local computer.
In conventional computer systems, the computer application is resident on the local computer. When the user wishes to access a particular computer application, the user selects the computer application via an operating system user interface to initiate or run the computer application. For example, in a Windows™ operating system, the user may select the particular computer application by “double-clicking” on an icon associated with the particular computer application from the “desktop” or selecting the particular computer application from a menu such as Windows™ “Program” menu. Once the particular computer application is selected, the operating system retrieves the particular computer application from a storage device at the local computer and runs it within the context of the operating system in a well-known manner.
With conventional computer systems, the user usually has to purchase a copy of each computer application that he intends to install and use on a computer. Often, these computer applications are expensive (i.e., paying for the installation of the application, or the per instance cost). When the application is purchased in this manner, the cost of a computer application on a per use basis is much higher for a casual user than a heavy user. It would be more economically efficient, if users paid for the computer application on a per use basis rather than on a per instance basis. The conventional configuration, however, does not provide a “pay-for-use” mechanism for the computer application.
Distribution is another problem associated with purchasing individual copies of a computer application. In conventional computer systems, computer applications are distributed to users via a software medium such as a floppy diskette. The user loads the computer application from the floppy diskette onto his local computer. Subsequent modifications to the application (e.g., corrections, modifications, additions, etc.) must be delivered to the user via a software medium as well, often times at additional expense to the user. To avoid this expense, many users simply retain an outdated (and often “buggy”) version of the computer application. Moreover, developers may delay the release of “bug fixes” for long periods of time with the intent of releasing the “bug fixes” with newly developed features. Meanwhile, users “make do” with a less than perfect computer application.
Yet another problem associated with individual copies of a computer application is the wasteful use of computer storage media. For example, it is not uncommon that a computer application, when fully installed on a local computer, require tens of megabytes of storage space on a computer hard drive. Typically, the amount of storage space required greatly increases with each subsequent release of the computer application. While storage space is becoming cheaper every year (in terms of dollars/megabyte), much of storage space is occupied by code functions never utilized by the user. This problem is compounded by copies of a computer application installed by millions of users, resulting in large scale storage media inefficiencies.
In view of the shortcomings of known techniques for distributing and operating applications programs, it would be useful to have a system and method that provide an alternative technique for delivering an operating system and computer applications.